package com.vivo.house.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class PlanStageHistoryExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public PlanStageHistoryExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andIdIsNull() {
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(String value) {
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(String value) {
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(String value) {
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(String value) {
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(String value) {
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(String value) {
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLike(String value) {
            addCriterion("id like", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotLike(String value) {
            addCriterion("id not like", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<String> values) {
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<String> values) {
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(String value1, String value2) {
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(String value1, String value2) {
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalIsNull() {
            addCriterion("FK_Project_approval is null");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalIsNotNull() {
            addCriterion("FK_Project_approval is not null");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalEqualTo(String value) {
            addCriterion("FK_Project_approval =", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalNotEqualTo(String value) {
            addCriterion("FK_Project_approval <>", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalGreaterThan(String value) {
            addCriterion("FK_Project_approval >", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalGreaterThanOrEqualTo(String value) {
            addCriterion("FK_Project_approval >=", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalLessThan(String value) {
            addCriterion("FK_Project_approval <", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalLessThanOrEqualTo(String value) {
            addCriterion("FK_Project_approval <=", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalLike(String value) {
            addCriterion("FK_Project_approval like", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalNotLike(String value) {
            addCriterion("FK_Project_approval not like", value, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalIn(List<String> values) {
            addCriterion("FK_Project_approval in", values, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalNotIn(List<String> values) {
            addCriterion("FK_Project_approval not in", values, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalBetween(String value1, String value2) {
            addCriterion("FK_Project_approval between", value1, value2, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andFkProjectApprovalNotBetween(String value1, String value2) {
            addCriterion("FK_Project_approval not between", value1, value2, "fkProjectApproval");
            return (Criteria) this;
        }

        public Criteria andPlanDateIsNull() {
            addCriterion("Plan_Date is null");
            return (Criteria) this;
        }

        public Criteria andPlanDateIsNotNull() {
            addCriterion("Plan_Date is not null");
            return (Criteria) this;
        }

        public Criteria andPlanDateEqualTo(Date value) {
            addCriterion("Plan_Date =", value, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateNotEqualTo(Date value) {
            addCriterion("Plan_Date <>", value, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateGreaterThan(Date value) {
            addCriterion("Plan_Date >", value, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateGreaterThanOrEqualTo(Date value) {
            addCriterion("Plan_Date >=", value, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateLessThan(Date value) {
            addCriterion("Plan_Date <", value, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateLessThanOrEqualTo(Date value) {
            addCriterion("Plan_Date <=", value, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateIn(List<Date> values) {
            addCriterion("Plan_Date in", values, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateNotIn(List<Date> values) {
            addCriterion("Plan_Date not in", values, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateBetween(Date value1, Date value2) {
            addCriterion("Plan_Date between", value1, value2, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanDateNotBetween(Date value1, Date value2) {
            addCriterion("Plan_Date not between", value1, value2, "planDate");
            return (Criteria) this;
        }

        public Criteria andPlanNameIsNull() {
            addCriterion("Plan_Name is null");
            return (Criteria) this;
        }

        public Criteria andPlanNameIsNotNull() {
            addCriterion("Plan_Name is not null");
            return (Criteria) this;
        }

        public Criteria andPlanNameEqualTo(String value) {
            addCriterion("Plan_Name =", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameNotEqualTo(String value) {
            addCriterion("Plan_Name <>", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameGreaterThan(String value) {
            addCriterion("Plan_Name >", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameGreaterThanOrEqualTo(String value) {
            addCriterion("Plan_Name >=", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameLessThan(String value) {
            addCriterion("Plan_Name <", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameLessThanOrEqualTo(String value) {
            addCriterion("Plan_Name <=", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameLike(String value) {
            addCriterion("Plan_Name like", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameNotLike(String value) {
            addCriterion("Plan_Name not like", value, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameIn(List<String> values) {
            addCriterion("Plan_Name in", values, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameNotIn(List<String> values) {
            addCriterion("Plan_Name not in", values, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameBetween(String value1, String value2) {
            addCriterion("Plan_Name between", value1, value2, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanNameNotBetween(String value1, String value2) {
            addCriterion("Plan_Name not between", value1, value2, "planName");
            return (Criteria) this;
        }

        public Criteria andPlanAreaIsNull() {
            addCriterion("Plan_Area is null");
            return (Criteria) this;
        }

        public Criteria andPlanAreaIsNotNull() {
            addCriterion("Plan_Area is not null");
            return (Criteria) this;
        }

        public Criteria andPlanAreaEqualTo(Double value) {
            addCriterion("Plan_Area =", value, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaNotEqualTo(Double value) {
            addCriterion("Plan_Area <>", value, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaGreaterThan(Double value) {
            addCriterion("Plan_Area >", value, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaGreaterThanOrEqualTo(Double value) {
            addCriterion("Plan_Area >=", value, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaLessThan(Double value) {
            addCriterion("Plan_Area <", value, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaLessThanOrEqualTo(Double value) {
            addCriterion("Plan_Area <=", value, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaIn(List<Double> values) {
            addCriterion("Plan_Area in", values, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaNotIn(List<Double> values) {
            addCriterion("Plan_Area not in", values, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaBetween(Double value1, Double value2) {
            addCriterion("Plan_Area between", value1, value2, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanAreaNotBetween(Double value1, Double value2) {
            addCriterion("Plan_Area not between", value1, value2, "planArea");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityIsNull() {
            addCriterion("Plan_building_density is null");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityIsNotNull() {
            addCriterion("Plan_building_density is not null");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityEqualTo(Double value) {
            addCriterion("Plan_building_density =", value, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityNotEqualTo(Double value) {
            addCriterion("Plan_building_density <>", value, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityGreaterThan(Double value) {
            addCriterion("Plan_building_density >", value, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityGreaterThanOrEqualTo(Double value) {
            addCriterion("Plan_building_density >=", value, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityLessThan(Double value) {
            addCriterion("Plan_building_density <", value, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityLessThanOrEqualTo(Double value) {
            addCriterion("Plan_building_density <=", value, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityIn(List<Double> values) {
            addCriterion("Plan_building_density in", values, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityNotIn(List<Double> values) {
            addCriterion("Plan_building_density not in", values, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityBetween(Double value1, Double value2) {
            addCriterion("Plan_building_density between", value1, value2, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanBuildingDensityNotBetween(Double value1, Double value2) {
            addCriterion("Plan_building_density not between", value1, value2, "planBuildingDensity");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyIsNull() {
            addCriterion("Plan_land_property is null");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyIsNotNull() {
            addCriterion("Plan_land_property is not null");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyEqualTo(String value) {
            addCriterion("Plan_land_property =", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyNotEqualTo(String value) {
            addCriterion("Plan_land_property <>", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyGreaterThan(String value) {
            addCriterion("Plan_land_property >", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyGreaterThanOrEqualTo(String value) {
            addCriterion("Plan_land_property >=", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyLessThan(String value) {
            addCriterion("Plan_land_property <", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyLessThanOrEqualTo(String value) {
            addCriterion("Plan_land_property <=", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyLike(String value) {
            addCriterion("Plan_land_property like", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyNotLike(String value) {
            addCriterion("Plan_land_property not like", value, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyIn(List<String> values) {
            addCriterion("Plan_land_property in", values, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyNotIn(List<String> values) {
            addCriterion("Plan_land_property not in", values, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyBetween(String value1, String value2) {
            addCriterion("Plan_land_property between", value1, value2, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanLandPropertyNotBetween(String value1, String value2) {
            addCriterion("Plan_land_property not between", value1, value2, "planLandProperty");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightIsNull() {
            addCriterion("Plan_Max_Height is null");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightIsNotNull() {
            addCriterion("Plan_Max_Height is not null");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightEqualTo(Double value) {
            addCriterion("Plan_Max_Height =", value, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightNotEqualTo(Double value) {
            addCriterion("Plan_Max_Height <>", value, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightGreaterThan(Double value) {
            addCriterion("Plan_Max_Height >", value, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightGreaterThanOrEqualTo(Double value) {
            addCriterion("Plan_Max_Height >=", value, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightLessThan(Double value) {
            addCriterion("Plan_Max_Height <", value, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightLessThanOrEqualTo(Double value) {
            addCriterion("Plan_Max_Height <=", value, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightIn(List<Double> values) {
            addCriterion("Plan_Max_Height in", values, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightNotIn(List<Double> values) {
            addCriterion("Plan_Max_Height not in", values, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightBetween(Double value1, Double value2) {
            addCriterion("Plan_Max_Height between", value1, value2, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanMaxHeightNotBetween(Double value1, Double value2) {
            addCriterion("Plan_Max_Height not between", value1, value2, "planMaxHeight");
            return (Criteria) this;
        }

        public Criteria andPlanEastIsNull() {
            addCriterion("Plan_east is null");
            return (Criteria) this;
        }

        public Criteria andPlanEastIsNotNull() {
            addCriterion("Plan_east is not null");
            return (Criteria) this;
        }

        public Criteria andPlanEastEqualTo(String value) {
            addCriterion("Plan_east =", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastNotEqualTo(String value) {
            addCriterion("Plan_east <>", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastGreaterThan(String value) {
            addCriterion("Plan_east >", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastGreaterThanOrEqualTo(String value) {
            addCriterion("Plan_east >=", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastLessThan(String value) {
            addCriterion("Plan_east <", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastLessThanOrEqualTo(String value) {
            addCriterion("Plan_east <=", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastLike(String value) {
            addCriterion("Plan_east like", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastNotLike(String value) {
            addCriterion("Plan_east not like", value, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastIn(List<String> values) {
            addCriterion("Plan_east in", values, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastNotIn(List<String> values) {
            addCriterion("Plan_east not in", values, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastBetween(String value1, String value2) {
            addCriterion("Plan_east between", value1, value2, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanEastNotBetween(String value1, String value2) {
            addCriterion("Plan_east not between", value1, value2, "planEast");
            return (Criteria) this;
        }

        public Criteria andPlanSouthIsNull() {
            addCriterion("Plan_south is null");
            return (Criteria) this;
        }

        public Criteria andPlanSouthIsNotNull() {
            addCriterion("Plan_south is not null");
            return (Criteria) this;
        }

        public Criteria andPlanSouthEqualTo(String value) {
            addCriterion("Plan_south =", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthNotEqualTo(String value) {
            addCriterion("Plan_south <>", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthGreaterThan(String value) {
            addCriterion("Plan_south >", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthGreaterThanOrEqualTo(String value) {
            addCriterion("Plan_south >=", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthLessThan(String value) {
            addCriterion("Plan_south <", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthLessThanOrEqualTo(String value) {
            addCriterion("Plan_south <=", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthLike(String value) {
            addCriterion("Plan_south like", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthNotLike(String value) {
            addCriterion("Plan_south not like", value, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthIn(List<String> values) {
            addCriterion("Plan_south in", values, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthNotIn(List<String> values) {
            addCriterion("Plan_south not in", values, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthBetween(String value1, String value2) {
            addCriterion("Plan_south between", value1, value2, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanSouthNotBetween(String value1, String value2) {
            addCriterion("Plan_south not between", value1, value2, "planSouth");
            return (Criteria) this;
        }

        public Criteria andPlanWestIsNull() {
            addCriterion("Plan_west is null");
            return (Criteria) this;
        }

        public Criteria andPlanWestIsNotNull() {
            addCriterion("Plan_west is not null");
            return (Criteria) this;
        }

        public Criteria andPlanWestEqualTo(String value) {
            addCriterion("Plan_west =", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestNotEqualTo(String value) {
            addCriterion("Plan_west <>", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestGreaterThan(String value) {
            addCriterion("Plan_west >", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestGreaterThanOrEqualTo(String value) {
            addCriterion("Plan_west >=", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestLessThan(String value) {
            addCriterion("Plan_west <", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestLessThanOrEqualTo(String value) {
            addCriterion("Plan_west <=", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestLike(String value) {
            addCriterion("Plan_west like", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestNotLike(String value) {
            addCriterion("Plan_west not like", value, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestIn(List<String> values) {
            addCriterion("Plan_west in", values, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestNotIn(List<String> values) {
            addCriterion("Plan_west not in", values, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestBetween(String value1, String value2) {
            addCriterion("Plan_west between", value1, value2, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanWestNotBetween(String value1, String value2) {
            addCriterion("Plan_west not between", value1, value2, "planWest");
            return (Criteria) this;
        }

        public Criteria andPlanNorthIsNull() {
            addCriterion("Plan_north is null");
            return (Criteria) this;
        }

        public Criteria andPlanNorthIsNotNull() {
            addCriterion("Plan_north is not null");
            return (Criteria) this;
        }

        public Criteria andPlanNorthEqualTo(String value) {
            addCriterion("Plan_north =", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthNotEqualTo(String value) {
            addCriterion("Plan_north <>", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthGreaterThan(String value) {
            addCriterion("Plan_north >", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthGreaterThanOrEqualTo(String value) {
            addCriterion("Plan_north >=", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthLessThan(String value) {
            addCriterion("Plan_north <", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthLessThanOrEqualTo(String value) {
            addCriterion("Plan_north <=", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthLike(String value) {
            addCriterion("Plan_north like", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthNotLike(String value) {
            addCriterion("Plan_north not like", value, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthIn(List<String> values) {
            addCriterion("Plan_north in", values, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthNotIn(List<String> values) {
            addCriterion("Plan_north not in", values, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthBetween(String value1, String value2) {
            addCriterion("Plan_north between", value1, value2, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanNorthNotBetween(String value1, String value2) {
            addCriterion("Plan_north not between", value1, value2, "planNorth");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestIsNull() {
            addCriterion("Plan_afforest is null");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestIsNotNull() {
            addCriterion("Plan_afforest is not null");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestEqualTo(Double value) {
            addCriterion("Plan_afforest =", value, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestNotEqualTo(Double value) {
            addCriterion("Plan_afforest <>", value, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestGreaterThan(Double value) {
            addCriterion("Plan_afforest >", value, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestGreaterThanOrEqualTo(Double value) {
            addCriterion("Plan_afforest >=", value, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestLessThan(Double value) {
            addCriterion("Plan_afforest <", value, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestLessThanOrEqualTo(Double value) {
            addCriterion("Plan_afforest <=", value, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestIn(List<Double> values) {
            addCriterion("Plan_afforest in", values, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestNotIn(List<Double> values) {
            addCriterion("Plan_afforest not in", values, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestBetween(Double value1, Double value2) {
            addCriterion("Plan_afforest between", value1, value2, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanAfforestNotBetween(Double value1, Double value2) {
            addCriterion("Plan_afforest not between", value1, value2, "planAfforest");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeIsNull() {
            addCriterion("Plan_volume is null");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeIsNotNull() {
            addCriterion("Plan_volume is not null");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeEqualTo(Double value) {
            addCriterion("Plan_volume =", value, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeNotEqualTo(Double value) {
            addCriterion("Plan_volume <>", value, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeGreaterThan(Double value) {
            addCriterion("Plan_volume >", value, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeGreaterThanOrEqualTo(Double value) {
            addCriterion("Plan_volume >=", value, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeLessThan(Double value) {
            addCriterion("Plan_volume <", value, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeLessThanOrEqualTo(Double value) {
            addCriterion("Plan_volume <=", value, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeIn(List<Double> values) {
            addCriterion("Plan_volume in", values, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeNotIn(List<Double> values) {
            addCriterion("Plan_volume not in", values, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeBetween(Double value1, Double value2) {
            addCriterion("Plan_volume between", value1, value2, "planVolume");
            return (Criteria) this;
        }

        public Criteria andPlanVolumeNotBetween(Double value1, Double value2) {
            addCriterion("Plan_volume not between", value1, value2, "planVolume");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateIsNull() {
            addCriterion("Source_Create_date is null");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateIsNotNull() {
            addCriterion("Source_Create_date is not null");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateEqualTo(Date value) {
            addCriterion("Source_Create_date =", value, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateNotEqualTo(Date value) {
            addCriterion("Source_Create_date <>", value, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateGreaterThan(Date value) {
            addCriterion("Source_Create_date >", value, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateGreaterThanOrEqualTo(Date value) {
            addCriterion("Source_Create_date >=", value, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateLessThan(Date value) {
            addCriterion("Source_Create_date <", value, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateLessThanOrEqualTo(Date value) {
            addCriterion("Source_Create_date <=", value, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateIn(List<Date> values) {
            addCriterion("Source_Create_date in", values, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateNotIn(List<Date> values) {
            addCriterion("Source_Create_date not in", values, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateBetween(Date value1, Date value2) {
            addCriterion("Source_Create_date between", value1, value2, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceCreateDateNotBetween(Date value1, Date value2) {
            addCriterion("Source_Create_date not between", value1, value2, "sourceCreateDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateIsNull() {
            addCriterion("Source_lastModify_date is null");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateIsNotNull() {
            addCriterion("Source_lastModify_date is not null");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateEqualTo(Date value) {
            addCriterion("Source_lastModify_date =", value, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateNotEqualTo(Date value) {
            addCriterion("Source_lastModify_date <>", value, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateGreaterThan(Date value) {
            addCriterion("Source_lastModify_date >", value, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateGreaterThanOrEqualTo(Date value) {
            addCriterion("Source_lastModify_date >=", value, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateLessThan(Date value) {
            addCriterion("Source_lastModify_date <", value, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateLessThanOrEqualTo(Date value) {
            addCriterion("Source_lastModify_date <=", value, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateIn(List<Date> values) {
            addCriterion("Source_lastModify_date in", values, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateNotIn(List<Date> values) {
            addCriterion("Source_lastModify_date not in", values, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateBetween(Date value1, Date value2) {
            addCriterion("Source_lastModify_date between", value1, value2, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceLastmodifyDateNotBetween(Date value1, Date value2) {
            addCriterion("Source_lastModify_date not between", value1, value2, "sourceLastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserIsNull() {
            addCriterion("Source_Add_user is null");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserIsNotNull() {
            addCriterion("Source_Add_user is not null");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserEqualTo(String value) {
            addCriterion("Source_Add_user =", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserNotEqualTo(String value) {
            addCriterion("Source_Add_user <>", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserGreaterThan(String value) {
            addCriterion("Source_Add_user >", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserGreaterThanOrEqualTo(String value) {
            addCriterion("Source_Add_user >=", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserLessThan(String value) {
            addCriterion("Source_Add_user <", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserLessThanOrEqualTo(String value) {
            addCriterion("Source_Add_user <=", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserLike(String value) {
            addCriterion("Source_Add_user like", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserNotLike(String value) {
            addCriterion("Source_Add_user not like", value, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserIn(List<String> values) {
            addCriterion("Source_Add_user in", values, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserNotIn(List<String> values) {
            addCriterion("Source_Add_user not in", values, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserBetween(String value1, String value2) {
            addCriterion("Source_Add_user between", value1, value2, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceAddUserNotBetween(String value1, String value2) {
            addCriterion("Source_Add_user not between", value1, value2, "sourceAddUser");
            return (Criteria) this;
        }

        public Criteria andSourceIdIsNull() {
            addCriterion("Source_id is null");
            return (Criteria) this;
        }

        public Criteria andSourceIdIsNotNull() {
            addCriterion("Source_id is not null");
            return (Criteria) this;
        }

        public Criteria andSourceIdEqualTo(String value) {
            addCriterion("Source_id =", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdNotEqualTo(String value) {
            addCriterion("Source_id <>", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdGreaterThan(String value) {
            addCriterion("Source_id >", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdGreaterThanOrEqualTo(String value) {
            addCriterion("Source_id >=", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdLessThan(String value) {
            addCriterion("Source_id <", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdLessThanOrEqualTo(String value) {
            addCriterion("Source_id <=", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdLike(String value) {
            addCriterion("Source_id like", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdNotLike(String value) {
            addCriterion("Source_id not like", value, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdIn(List<String> values) {
            addCriterion("Source_id in", values, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdNotIn(List<String> values) {
            addCriterion("Source_id not in", values, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdBetween(String value1, String value2) {
            addCriterion("Source_id between", value1, value2, "sourceId");
            return (Criteria) this;
        }

        public Criteria andSourceIdNotBetween(String value1, String value2) {
            addCriterion("Source_id not between", value1, value2, "sourceId");
            return (Criteria) this;
        }

        public Criteria andStatusIsNull() {
            addCriterion("Status is null");
            return (Criteria) this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion("Status is not null");
            return (Criteria) this;
        }

        public Criteria andStatusEqualTo(String value) {
            addCriterion("Status =", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotEqualTo(String value) {
            addCriterion("Status <>", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThan(String value) {
            addCriterion("Status >", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(String value) {
            addCriterion("Status >=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThan(String value) {
            addCriterion("Status <", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThanOrEqualTo(String value) {
            addCriterion("Status <=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLike(String value) {
            addCriterion("Status like", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotLike(String value) {
            addCriterion("Status not like", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusIn(List<String> values) {
            addCriterion("Status in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotIn(List<String> values) {
            addCriterion("Status not in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusBetween(String value1, String value2) {
            addCriterion("Status between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotBetween(String value1, String value2) {
            addCriterion("Status not between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andRemarksIsNull() {
            addCriterion("Remarks is null");
            return (Criteria) this;
        }

        public Criteria andRemarksIsNotNull() {
            addCriterion("Remarks is not null");
            return (Criteria) this;
        }

        public Criteria andRemarksEqualTo(String value) {
            addCriterion("Remarks =", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksNotEqualTo(String value) {
            addCriterion("Remarks <>", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksGreaterThan(String value) {
            addCriterion("Remarks >", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksGreaterThanOrEqualTo(String value) {
            addCriterion("Remarks >=", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksLessThan(String value) {
            addCriterion("Remarks <", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksLessThanOrEqualTo(String value) {
            addCriterion("Remarks <=", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksLike(String value) {
            addCriterion("Remarks like", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksNotLike(String value) {
            addCriterion("Remarks not like", value, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksIn(List<String> values) {
            addCriterion("Remarks in", values, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksNotIn(List<String> values) {
            addCriterion("Remarks not in", values, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksBetween(String value1, String value2) {
            addCriterion("Remarks between", value1, value2, "remarks");
            return (Criteria) this;
        }

        public Criteria andRemarksNotBetween(String value1, String value2) {
            addCriterion("Remarks not between", value1, value2, "remarks");
            return (Criteria) this;
        }

        public Criteria andCreateDateIsNull() {
            addCriterion("Create_date is null");
            return (Criteria) this;
        }

        public Criteria andCreateDateIsNotNull() {
            addCriterion("Create_date is not null");
            return (Criteria) this;
        }

        public Criteria andCreateDateEqualTo(Date value) {
            addCriterion("Create_date =", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateNotEqualTo(Date value) {
            addCriterion("Create_date <>", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateGreaterThan(Date value) {
            addCriterion("Create_date >", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateGreaterThanOrEqualTo(Date value) {
            addCriterion("Create_date >=", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateLessThan(Date value) {
            addCriterion("Create_date <", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateLessThanOrEqualTo(Date value) {
            addCriterion("Create_date <=", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateIn(List<Date> values) {
            addCriterion("Create_date in", values, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateNotIn(List<Date> values) {
            addCriterion("Create_date not in", values, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateBetween(Date value1, Date value2) {
            addCriterion("Create_date between", value1, value2, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateNotBetween(Date value1, Date value2) {
            addCriterion("Create_date not between", value1, value2, "createDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateIsNull() {
            addCriterion("lastModify_date is null");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateIsNotNull() {
            addCriterion("lastModify_date is not null");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateEqualTo(Date value) {
            addCriterion("lastModify_date =", value, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateNotEqualTo(Date value) {
            addCriterion("lastModify_date <>", value, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateGreaterThan(Date value) {
            addCriterion("lastModify_date >", value, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateGreaterThanOrEqualTo(Date value) {
            addCriterion("lastModify_date >=", value, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateLessThan(Date value) {
            addCriterion("lastModify_date <", value, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateLessThanOrEqualTo(Date value) {
            addCriterion("lastModify_date <=", value, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateIn(List<Date> values) {
            addCriterion("lastModify_date in", values, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateNotIn(List<Date> values) {
            addCriterion("lastModify_date not in", values, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateBetween(Date value1, Date value2) {
            addCriterion("lastModify_date between", value1, value2, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andLastmodifyDateNotBetween(Date value1, Date value2) {
            addCriterion("lastModify_date not between", value1, value2, "lastmodifyDate");
            return (Criteria) this;
        }

        public Criteria andAddUserIsNull() {
            addCriterion("Add_user is null");
            return (Criteria) this;
        }

        public Criteria andAddUserIsNotNull() {
            addCriterion("Add_user is not null");
            return (Criteria) this;
        }

        public Criteria andAddUserEqualTo(String value) {
            addCriterion("Add_user =", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserNotEqualTo(String value) {
            addCriterion("Add_user <>", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserGreaterThan(String value) {
            addCriterion("Add_user >", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserGreaterThanOrEqualTo(String value) {
            addCriterion("Add_user >=", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserLessThan(String value) {
            addCriterion("Add_user <", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserLessThanOrEqualTo(String value) {
            addCriterion("Add_user <=", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserLike(String value) {
            addCriterion("Add_user like", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserNotLike(String value) {
            addCriterion("Add_user not like", value, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserIn(List<String> values) {
            addCriterion("Add_user in", values, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserNotIn(List<String> values) {
            addCriterion("Add_user not in", values, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserBetween(String value1, String value2) {
            addCriterion("Add_user between", value1, value2, "addUser");
            return (Criteria) this;
        }

        public Criteria andAddUserNotBetween(String value1, String value2) {
            addCriterion("Add_user not between", value1, value2, "addUser");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}